# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Analytics.V3.Model.FilterAdvancedDetails do
  @moduledoc """
  Details for the filter of the type ADVANCED.

  ## Attributes

  *   `caseSensitive` (*type:* `boolean()`, *default:* `nil`) - Indicates if the filter expressions are case sensitive.
  *   `extractA` (*type:* `String.t`, *default:* `nil`) - Expression to extract from field A.
  *   `extractB` (*type:* `String.t`, *default:* `nil`) - Expression to extract from field B.
  *   `fieldA` (*type:* `String.t`, *default:* `nil`) - Field A.
  *   `fieldAIndex` (*type:* `integer()`, *default:* `nil`) - The Index of the custom dimension. Required if field is a CUSTOM_DIMENSION.
  *   `fieldARequired` (*type:* `boolean()`, *default:* `nil`) - Indicates if field A is required to match.
  *   `fieldB` (*type:* `String.t`, *default:* `nil`) - Field B.
  *   `fieldBIndex` (*type:* `integer()`, *default:* `nil`) - The Index of the custom dimension. Required if field is a CUSTOM_DIMENSION.
  *   `fieldBRequired` (*type:* `boolean()`, *default:* `nil`) - Indicates if field B is required to match.
  *   `outputConstructor` (*type:* `String.t`, *default:* `nil`) - Expression used to construct the output value.
  *   `outputToField` (*type:* `String.t`, *default:* `nil`) - Output field.
  *   `outputToFieldIndex` (*type:* `integer()`, *default:* `nil`) - The Index of the custom dimension. Required if field is a CUSTOM_DIMENSION.
  *   `overrideOutputField` (*type:* `boolean()`, *default:* `nil`) - Indicates if the existing value of the output field, if any, should be overridden by the output expression.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :caseSensitive => boolean() | nil,
          :extractA => String.t() | nil,
          :extractB => String.t() | nil,
          :fieldA => String.t() | nil,
          :fieldAIndex => integer() | nil,
          :fieldARequired => boolean() | nil,
          :fieldB => String.t() | nil,
          :fieldBIndex => integer() | nil,
          :fieldBRequired => boolean() | nil,
          :outputConstructor => String.t() | nil,
          :outputToField => String.t() | nil,
          :outputToFieldIndex => integer() | nil,
          :overrideOutputField => boolean() | nil
        }

  field(:caseSensitive)
  field(:extractA)
  field(:extractB)
  field(:fieldA)
  field(:fieldAIndex)
  field(:fieldARequired)
  field(:fieldB)
  field(:fieldBIndex)
  field(:fieldBRequired)
  field(:outputConstructor)
  field(:outputToField)
  field(:outputToFieldIndex)
  field(:overrideOutputField)
end

defimpl Poison.Decoder, for: GoogleApi.Analytics.V3.Model.FilterAdvancedDetails do
  def decode(value, options) do
    GoogleApi.Analytics.V3.Model.FilterAdvancedDetails.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Analytics.V3.Model.FilterAdvancedDetails do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
